This invention pertains to computer code generation. More particularly, it relates to the generation of tools for computing apparatus.
Tool development is the process of creating tools that perform a desired task such as generating code from, for example, a markup language such as Extensible Markup Language (XML). Other markup languages include HyperText Markup Language (HTML) and Standard Generalized Markup Language (SGML).
Currently, developers implementing tools do so on an adhoc basis or they adhere to a model that was previously developed. Either way, such tools often have their own implementation for separating functionality, their own definitions for their objects, and their own set of application programming interfaces (APIs) for invocation and for passing data.
The process of developing tools is characterized today by several problems. Among these are (1) inconsistent tooling design, which leads to the development of inconsistent tools that offer the same functionality; (2) difficult intercommunication between various structures representing tooling data; (3) difficult, major changes in design of tools required to substitute functionality between the tools; and (4) inconsistent tooling functionality and separate tooling presentation.
Consequently, there is a need in the art for a tooling framework that can address these problems.
Indeed, there is a need to provide a system and method for tool development having a structured consistent way of developing tools that can ease implementation, that may also provide a common interface whereby various tools can communicate with one another, and that may also provide a tool component which is independent of its environment and tool data.
There is also a need to provide a tool development system and process that facilitates ease of substitution between various tools and components interacting to the tool such as user interface (UI) components, different tools, etc. A graphical user interface (GUI) is an example of a UI component including a set of view, model, and controller objects for handling the collection and display of data to the user.
There is also a need to provide a tool development system and process that allows different structures to be generated as well as to have those structures generated in different programming languages.
In accordance with the preferred embodiment of the invention, a code generation tooling framework comprises a resource component, a repository component, and a tool component. The tool component has a reference to the resource component and includes code generating objects for generating code from markup language meta data. The repository component has a reference to the resource component and provides a wrapper class enabling the tool component to interact with a current environment selectively for storing, retrieving, and deleting the resource components. The resource component is used to represent information shared between components.